package cn.ysnk.generateCode;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.jfinal.kit.PathKit;

/**
 * 字符串处理工具类
 * 作者： 夏尉
 * 创建时间： 2017年4月2日
 */
public class MyStringUtil {
	/**
	 * 判断字符串是否为空或者空字符串
	 * @param str
	 * @return
	 * author：夏尉
	 */
	public static boolean isNotNull(String str){
		if(str==null||"".equals(str))
			return false;
		return true;
	}
	/**
	 * 首字母大写
	 * @param name
	 * @return
	 * author：夏尉
	 */
	public static String captureName(String name) {
		char[] cs = name.toCharArray();
		cs[0] -= 32;
		return String.valueOf(cs);
	}

	public static void main(String[] args) {
		System.out.println(captureName("myFirstLove"));
		System.out.println("varchar(878)".replaceAll("\\(\\d+\\)", ""));
	}
	
	/**
	 * Java类名风格字符串
	 * 
	 * @param str
	 * @return
	 */
	public static String toJavaClassStyle(String str) {
		return underlineToCamelhump(str);
	}

	/**
	 * 将下划线风格替换为驼峰风格 （首字母大写） eg：user_blog 转换成UserBlog
	 * 
	 * @param str
	 * @return
	 */
	public static String underlineToCamelhump(String str) {
		Matcher matcher = Pattern.compile("_[a-z]").matcher(str);
		StringBuilder builder = new StringBuilder(str);
		for (int i = 0; matcher.find(); i++) {
			builder.replace(matcher.start() - i, matcher.end() - i, matcher.group().substring(1).toUpperCase());
		}
		builder.replace(0, 1, String.valueOf(Character.toUpperCase(builder.charAt(0))));
		return builder.toString();
	}
	
	/**
	 * 将下划线风格替换为驼峰风格 （首字母小写） eg：user_blog 转换成userBlog
	 * 
	 * @param str
	 * @return
	 */
	public static String underlineToCamelhumpFirstLow(String str) {
		Matcher matcher = Pattern.compile("_[a-z]").matcher(str);
		StringBuilder builder = new StringBuilder(str);
		for (int i = 0; matcher.find(); i++) {
			builder.replace(matcher.start() - i, matcher.end() - i, matcher.group().substring(1).toUpperCase());
		}
		return builder.toString();
	}

	public static String getTemplatePath() {
		String path = PathKit.getRootClassPath();//GenerateCode.class.getResource("").getPath();
		return path;
	}
}
